
package com.liangtian.mdm.dm.model.dao;

import com.liangtian.mdm.base.BaseDao;
import com.liangtian.mdm.dm.model.model.Model;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
public interface ModelDao extends BaseDao<Model> {
    /**
     * @author : xiaoliu
     * @date :2016年7月12日上午10:15:38
     */
    List<Model> queryAllModelListByCondition(Map<String, Object> model);

    /**
     * @author : xiaoliu
     * @date :2016年7月20日下午1:37:00
     */
    int updateTableName(Map map);

    /**
     * Title:模型定义新增 方法
     *
     * @author : xiaoliu
     * @date :2016年7月12日上午10:16:38
     */
    int insertModel(Model model);

    /**
     * Title: 动态模型定义 批量删除模型功能
     *
     * @author : xiaoliu
     * @date :2016年7月12日下午3:14:11
     */
    public int modelDel(Map<String, Object> map);

    /**
     * Title: 新增模型定义时，判断模型名称是否已经存在
     *
     * @author : xiaoliu
     * @date :2016年7月13日下午6:38:33
     */
    public int checkModelName(Model model);

    /**
     * Title: 新增时，动态表名的加载
     *
     * @author : xiaoliu
     * @date :2016年7月13日下午7:20:07
     */
    public List<Model> queryTables(Model model);

    /**
     * Title: 通过主键id 查询model对象
     *
     * @author : xiaoliu
     * @date :2016年7月20日下午1:43:16
     */
    Model selectByPk(String id);

    /**
     * Title: 模型定义 模型的修改方法
     *
     * @author : xiaoliu
     * @date :2016年7月20日下午1:40:40
     */
    void updateModel(Model models);

    /**
     * Title: 逻辑删除模型
     *
     * @author : xiaoliu
     * @date :2016年7月20日下午1:38:12
     */
    int editModelStatus(List<String> ids);

    /**
     * 清空可能关联的子表
     *
     * @param ids
     * @return
     */
    int emptySubModel(List<String> ids);

    /**
     * 修改模型的一些标识字段
     *
     * @author : xiaoliu
     * @date :2016年7月20日下午1:37:39
     */
    void updateModelFlag(Model model);

    /**
     * 查询所有model表，作为数据来源表
     *
     * @param model_type
     * @return
     */
    public List<Model> queryAllModelTables(Map map);

    /**
     * 已建表的有效模型
     *
     * @param id
     * @return
     */
    Model selectValidModel(String id);

    /**
     * 判断模型是否有从表 [一主多从]
     *
     * @param cond
     * @return
     */
    List<Model> isHasSub(String modelId);

    //模型复制功能
    int modelCopy(Map<String, Object> param);

}
